(function () {
    UE.Editor.prototype.loadServerConfig = function () {
        var me = this;
        setTimeout(function () {
            try {
                me.options.imageUrl &&
                    me.setOpt(
                        "serverUrl",
                        me.options.imageUrl.replace(
                            /^(.*[\/]).+([\.].+)$/,
                            "$1controller$2"
                        )
                    );

                var configUrl = me.getActionUrl("config"),
                    isJsonp = utils.isCrossDomainUrl(configUrl);

                /* 发出ajax请求 */
                me._serverConfigLoaded = false;

                configUrl &&
                    UE.ajax.request(configUrl, {
                        method: "GET",
                        dataType: isJsonp ? "jsonp" : "",
                        onsuccess: function (r) {
                            try {
                                var config = isJsonp
                                    ? r
                                    : eval("(" + r.responseText + ")");
                                utils.extend(me.options, config);
                                me.fireEvent("serverConfigLoaded");
                                me._serverConfigLoaded = true;
                            } catch (e) {
                                showErrorMsg(
                                    me.getLang("loadconfigFormatError")
                                );
                            }
                        },
                        onerror: function () {
                            showErrorMsg(me.getLang("loadconfigHttpError"));
                        },
                    });
            } catch (e) {
                showErrorMsg(me.getLang("loadconfigError"));
            }
        });

        function showErrorMsg(msg) {
            console && console.error(msg);
            //me.fireEvent('showMessage', {
            //    'title': msg,
            //    'type': 'error'
            //});
        }
    };

    UE.Editor.prototype.isServerConfigLoaded = function () {
        var me = this;
        return me._serverConfigLoaded || false;
    };

    UE.Editor.prototype.afterConfigReady = function (handler) {
        if (!handler || !utils.isFunction(handler)) return;
        var me = this;
        var readyHandler = function () {
            handler.apply(me, arguments);
            me.removeListener("serverConfigLoaded", readyHandler);
        };

        if (me.isServerConfigLoaded()) {
            handler.call(me, "serverConfigLoaded");
        } else {
            me.addListener("serverConfigLoaded", readyHandler);
        }
    };
})();
